package ar.com.jsejtman.cajugastos2.core.service;

import ar.com.jsejtman.cajugastos2.core.entity.Empresa;
import ar.com.jsejtman.common.service.data.DataPage;
import ar.com.jsejtman.common.service.data.SortCriterion;
import ar.com.jsejtman.common.service.exception.EntitySearchException;

/**
 * Servicio para gestionar empresas.
 * 
 * @author jsejtman
 */
public interface IEmpresaService {

	/**
	 * Realiza una búsqueda de empresa por varios criterios de búsqueda.
	 * 
	 * @param cuit Criterio de CUIT para búsqueda.
	 * @param razonSocial Criterio de razón social para búsqueda.
	 * @param pageNumber Número de página a obtener.
	 * @param pageSize Tamaño de página a obtener.
	 * @param sortCriterion Criterio de ordenamiento (si corresponde).
	 * @return Página de datos hallada.
	 * @throws EntitySearchException En caso de problemas al realizar la búsqueda.
	 */
	DataPage<Empresa> searchEmpresa(final String cuit, final String razonSocial,
	        final Integer pageNumber, final Integer pageSize, final SortCriterion sortCriterion)
	        throws EntitySearchException;
}
